<?php

App::uses('AppController', 'Controller');

/**
 * Pacientes Controller
 *
 * @property Paciente $Paciente
 */
class PacientesController extends AppController {

    public function carregaestados() {
        $this->layout = false;
        $this->autoRender = false;
        $this->render(false);
        $params = $this->request->data;
        $this->loadModel('Uf');

        $arrCidades = $this->Uf->find('all');

        $arrResult = array();
        foreach ($arrCidades as $ufs) {
            $arrResult[trim($ufs['Uf']['CD_UF'])] = $ufs['Uf']['NM_UF'];
        }

        echo json_encode($arrResult);
    }

    public function carregacidades() {
        $this->layout = false;
        $this->autoRender = false;
        $this->render(false);

        $params = $this->request->data;
        $this->loadModel('Cidade');
        $parametros['conditions'][0] = array('Cidade.CD_UF' => $params['UF']);

        $arrCidades = $this->Cidade->find('all', $parametros);

        $arrResult = array();
        foreach ($arrCidades as $ufs) {
            $arrResult[trim($ufs['Cidade']['CD_CID'])] = $ufs['Cidade']['NM_CID'];
        }

        echo json_encode($arrResult);
    }

    protected function condicaoPesquisa($post) {
        $arrReplace = array('.', '-', '/');

        $i = 0;

        if ($post['Pesquisar']['NM_PAC'])
            $parametros['conditions'][$i++] = array('PACIENTE.NM_PAC LIKE ' => '%' . $post['Pesquisar']['NM_PAC'] . '%');

        if ($post['Pesquisar']['DT_NASC'])
            $parametros['conditions'][$i++] = array('PACIENTE.DT_NASC = ' => date('Y-m-d H:i:s', strtotime(str_replace('/', '-', $post['Pesquisar']['DT_NASC']))));

        if ($post['Pesquisar']['STATUS'])
            $parametros['conditions'][$i++] = array('AUTORIZADO.STATUS = ' => $post['Pesquisar']['STATUS']);

        if ($post['Pesquisar']['DT_INIC_ANTI_RETRO'])
            $parametros['conditions'][$i++] = array('PACIENTE.DT_INIC_ANTI_RETRO = ' => $post['Pesquisar']['DT_INIC_ANTI_RETRO']);

        if ($post['Pesquisar']['DT_DIAG'])
            $parametros['conditions'][$i++] = array('PACIENTE.DT_DIAG = ' => $post['Pesquisar']['DT_DIAG']);

//        if ($post['Pesquisar']['DT_SOLIC'])
//            $parametros['conditions'][$i++] = array('PACIENTE.DT_SOLIC = ' => $post['Pesquisar']['DT_SOLIC']);
//        if ($post['Pesquisar']['STATUS'])
//            $parametros['conditions'][$i++] = array('PACIENTE.STATUS = ' => $post['Pesquisar']['STATUS']);

        if ($post['Pesquisar']['CD_CID_NAT'])
            $parametros['conditions'][$i++] = array('CIDADE.NM_CID = ' => $post['Pesquisar']['CD_CID_NAT']);

        if ($post['Pesquisar']['CD_UF'])
            $parametros['conditions'][$i++] = array('CIDADE.CD_UF = ' => $post['Pesquisar']['CD_UF']);

        if ($post['Pesquisar']['NU_CPF_PAC'])
            $parametros['conditions'][$i++] = array('PACIENTE.NUM_CPF_PAC = ' => str_replace($arrReplace, '', $post['Pesquisar']['NU_CPF_PAC']));

        if ($post['Pesquisar']['SEXO'])
            $parametros['conditions'][$i++] = array('PACIENTE.SEXO = ' => $post['Pesquisar']['SEXO']);

        if ($post['Pesquisar']['CASO_AIDS'])
            $parametros['conditions'][$i++] = array('PACIENTE.CASO_AIDS = ' => $post['Pesquisar']['CASO_AIDS']);

        return $parametros;
    }

    /**
     * index method
     *
     * @return void
     */
    public function index() {
        try {
            $parametros['conditions'] = array();
            if ($this->request->is('post')) {

                if (!self::validaPesquisa($this->request->data['Pesquisar'])) {
                    return false;
                } else {

                    $this->loadModel('Paciente');

                    $parametros = self::condicaoPesquisa($this->request->data);

                    $this->set('Pacientes', self::pesquisaPacientes($parametros));
                }            
            }else{
                $this->set('Pacientes', self::pesquisaPacientes($parametros));
            }
        } catch (Exception $e) {
                $this->Session->setFlash(__('Ocorreu um erro durante a pesquisa.'));
            }
    }

    public function pesquisaPacientes($parametros){

        return $this->Paciente->find('all', array(
                        'joins' => array(
                            array(
                                'table' => 'CIDADE',
                                'alias' => 'CIDADE',
                                'type' => 'LEFT',
                                'conditions' => array(
                                    'PACIENTE.CD_CID_NAT = CIDADE.CD_CID'
                                )
                            ),
                            array(
                                'table' => 'UF',
                                'alias' => 'UF',
                                'type' => 'LEFT',
                                'conditions' => array(
                                    'UF.CD_UF = CIDADE.CD_UF'
                                )
                            ),
                            array(
                                'table' => 'PAIS',
                                'alias' => 'PAIS',
                                'type' => 'LEFT',
                                'conditions' => array(
                                    'PAIS.CD_PAIS = PACIENTE.CD_PAIS'
                                )
                            ),
                            array(
                                'table' => 'RACA_COR',
                                'alias' => 'RACA',
                                'type' => 'LEFT',
                                'conditions' => array(
                                    'RACA.RACA = PACIENTE.RACA'
                                )
                            ),
                            array(
                                'table' => 'AUTORIZADO',
                                'alias' => 'AUTORIZADO',
                                'type' => 'LEFT',
                                'conditions' => array(
                                    'AUTORIZADO.CD_LOGIN = PACIENTE.CD_LOGIN'
                                )
                            ),
                            array(
                                'table' => 'TB_ETNIA',
                                'alias' => 'ETNIA',
                                'type' => 'LEFT',
                                'conditions' => array(
                                    'PACIENTE.CO_ETNIA = ETNIA.CO_ETNIA'
                                )
                            ),
                        ),
                        'conditions' => $parametros['conditions']
                        ,
                        'fields' => array('PACIENTE.CD_PAC',
                            'PACIENTE.NM_PAC',
                            'PACIENTE.NM_MAE',
                            'PACIENTE.DT_NASC',
                            'PACIENTE.NUM_CPF_PAC',
                            'PACIENTE.EMAIL',
                            'RACA.DS_RACA',
                            'PACIENTE.SEXO',
                            'PACIENTE.CO_ETNIA',
                            'PACIENTE.CD_PAIS',
                            'ETNIA.DS_ETNIA',
                            'PAIS.NM_PAIS',
                        )
                        )
                    );

    }

    /**
     * view method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function visualizar($id = null) {
        $this->loadModel('Paciente');
        $options = array('conditions' => array('Paciente.CD_PAC' => $id));
        $this->set('Paciente', $this->Paciente->find('first', $options));
    }

    /**
     * add method
     *
     * @return void
     */
    public function add() {
        if ($this->request->is('post')) {
            $this->Paciente->create();
            if ($this->Paciente->save($this->request->data)) {
                $this->Session->setFlash(__('Registro salvo com sucesso.'));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('Não foi possivel salvar o registro. Por favor, tente novamente.'));
            }
        }
    }

    /**
     * edit method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function editar($id = null) {
        if (!$this->Paciente->exists($id)) {
            throw new NotFoundException(__('Paciente não encontrado.'));
        }
        if ($this->request->is('post') || $this->request->is('put')) {
            if ($this->Paciente->save($this->request->data)) {
                $this->Session->setFlash(__('Registro salvo com sucesso'));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('Não foi possivel salvar o registro. Por favor, tente novamente.'));
            }
        } else {
            $options = array('conditions' => array('Paciente.' . $this->Paciente->primaryKey => $id));
            $this->request->data = $this->Paciente->find('first', $options);
        }
    }

    /**
     * delete method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function deletar($id = null) {
        $this->loadModel('Paciente');
        $this->Paciente->id = $id;

        $condition = array(
            'conditions' => array(
                'PACIENTE' . '.CD_PAC' => $id
            ),
            'recursive' => -1,
            'callbacks' => false
        );

        if (!(bool) $this->Paciente->find('count', $condition)) {
            throw new NotFoundException(__('Invalid p a c i e n t e'));
        }

        $this->request->onlyAllow('post', 'delete');
        if ($this->Paciente->delete($id)) {
            $this->Session->setFlash(__('Registro deletado.'));
            $this->redirect(array('action' => 'index'));
        }
        $this->Session->setFlash(__('P a c i e n t e was not deleted'));
        $this->redirect(array('action' => 'index'));
    }

    /**
     * RN-PAC01 RN-PAC03 RN-PAC04  
     * @param type $params 
     */
    public function existePaciente($params) {
        $this->loadModel('Paciente');
        $options = array('conditions' => array('Paciente.NM_PAC' => $params['NM_PAC']));
        $arrPaciente = $this->Paciente->find('first', $options);

        if (count($arrPaciente)) {
            if ($params['NUM_CPF_PAC'] == $arrPaciente['Paciente']['NUM_CPF_PAC']) {
                $this->Session->setFlash(__('Este CPF já está casdastrado. O Siscel não permite CPF duplicado.'));
                return true;
            }

            if ($params['NM_MAE'] == $arrPaciente['Paciente']['NM_MAE']
                || $params['CD_CID_NAT'] == $arrPaciente['Paciente']['CD_CID_NAT']
                || date('Y-m-d H:i:s', strtotime(str_replace('/', '-', $params['DT_NASC']))) == $arrPaciente['Paciente']['DT_NASC']) {
                $this->Session->setFlash(__("Esse registro já exite. <a href='cadastrar/{$arrPaciente["Paciente"]["CD_PAC"]}'> Acesse Aqui. </a>"));
                return true;
            }
        }

        return false;
    }

    /**
     * cadastrar method
     *
     * @return void
     */
    public function cadastrar($id = null) {
        //$this->loadModel('Paciente');
        $this->loadModel('TB_ETNIA');
        $this->loadModel('RACA_COR');
        $this->loadModel('Pais');
        $this->loadModel('Uf');
        $this->loadModel('Cidade');
        $this->loadModel('Escolaridade');
        $this->loadModel('Telefone');
        $this->loadModel('Situacao');
        $this->loadModel('Motivo');

        $arrEstadoCivil = array(
            '' => 'Selecione um item',
            1 => 'Solteiro(a)',
            2 => 'Casado(a)',
            3 => 'Divorciado(a)',
        );

        $arrTipoEndereco = array(
            '' => 'Selecione um item',
            'R' => 'Residencial',
            'T' => 'Comercial',
        );

        $this->set('CD_PAC', $id);
        $this->set('arrEtnia', $this->TB_ETNIA->getCombo(array('CO_ETNIA', 'DS_ETNIA')));
        $this->set('arrRaca', $this->RACA_COR->getCombo(array('RACA', 'DS_RACA')));
        $this->set('arrPais', $this->Pais->getCombo(array('CD_PAIS', 'NM_PAIS')));
        $this->set('arrUf', $this->Uf->getCombo(array('CD_UF', 'NM_UF')));
        $this->set('arrCidade', $this->Cidade->getCombo(array('CD_CID', 'NM_CID')));
        $this->set('arrEscolaridade', $this->Escolaridade->getCombo(array('CD_ESCOLARIDADE', 'DS_ESCOLARIDADE')));
        $this->set('arrSituacao', $this->Situacao->getCombo(array('CO_SITUACAO_PACIENTE', 'DS_SITUACAO_PACIENTE')));
        $this->set('arrMotivo', $this->Motivo->getCombo(array('CO_MOTIVO', 'DS_MOTIVO')));
        $this->set('arrEstadoCivil', $arrEstadoCivil);
        $this->set('arrTipoEndereco', $arrTipoEndereco);
        $this->set('bloquear', false);

        if ($this->request->is('post')) {
            try {

                $post = $this->request->data['Paciente'];

                if (!self::validaFormulario($post)) {
                    return false;
                }

                if ($this->existePaciente($post)) {
                    return false;
                }

                $dataSource = $this->Paciente->getDataSource();
                $dataSource->begin();

                if (!empty($post['NUM_CPF_PAC'])) {
                    $this->loadModel('Autorizados');
                    $cdLogin = str_replace(array('.', '-'), '', $post['NUM_CPF_PAC']);
                    $post['USUARIO']['CD_LOGIN'] = $cdLogin;
                    $post['USUARIO']['NM_AUT'] = $post['NM_PAC'];
                    $post['USUARIO']['STATUS'] = 'A';
                    $post['USUARIO']['SENHA'] = '123456';
                    $post['USUARIO']['SEXO'] = $post['SEXO'];
                    $post['USUARIO']['DS_EMAIL'] = $post['EMAIL'];
                    $post['USUARIO']['TP_AUTORIZADO'] = '1';

                    $retorno = $this->Autorizados->save($post['USUARIO'], false);
                    $post['CD_LOGIN'] = $cdLogin;

                    //UPLOAD
                    if (!empty($post['fotoUsuario'])) {
                        $tmp_nome = $post['fotoUsuario'];
                        $this->uploadIMG($tmp_nome, $cdLogin);
                    }
                }

                $cdPaciente = self::cadastroBasico($post);

                //UPLOAD
                if (!empty($post['fotoUsuario'])) {
                    $tmp_nome = $post['fotoUsuario'];
                    $this->uploadIMGPaciente($tmp_nome, $cdPaciente);
                }

                if (array_key_exists('Paciente', $cdPaciente)) {
                    if (array_key_exists('Telefone', $post)) {
                        foreach ($post['Telefone'] as $t) {
                            $this->Telefone->Create();
                            unset($t['CD_LOGIN']);
                            $t['CD_PAC'] = $cdPaciente['Paciente']['CD_PAC'];
                            $t['NU_TELEFONE'] = strtr($t['NU_TELEFONE'], array('-' => ''));
                            $codTelefone = $this->Telefone->save($t, false);
                            if (empty($codTelefone)) {
                                throw new Exception('Erro ao cadastrar telefone.');
                            }
                        }
                    }

                    $dataSource->commit();
                    $this->Session->setFlash(__('Registro Salvo.'));
                    $this->redirect(array('action' => 'index'));
                } else {
                    throw new Exception;
                }
            } catch (Exception $e) {
                $dataSource->rollback();
                print $e;exit;
                $this->Session->setFlash("Ocorreu um erro ao cadastrar o paciente.");
            }
        } else {
            if ($id) {
                $options = array('conditions' => array('Paciente.CD_PAC' => $id));
                $this->request->data = $this->Paciente->find('first', $options);

                $optPhone = array('conditions' => array('Telefone.CD_PAC' => $id));
                $this->request->data += array('TELEFONES' => $this->Telefone->find('first', $optPhone));

                $resul = $this->Paciente->query("SELECT REL.* 
                                                 FROM TB_RESPONSAVEL REL 
                                                    INNER JOIN RL_RESPONSAVEL_PACIENTE RES ON RES.CO_RESPONSAVEL = REL.CO_RESPONSAVEL 
                                                 WHERE RES.CD_PAC = {$id}");
                $this->request->data += array('RESPONSAVEL' => $resul);

                $resSituacao = $this->Paciente->query("SELECT SP.CO_SITUACAO_PACIENTE, SP.CO_MOTIVO,
                                                              MO.DS_MOTIVO, TS.DS_SITUACAO_PACIENTE
                                                      FROM RL_SITUACAO_PACIENTE SP 
                                                        INNER JOIN TB_MOTIVO MO ON MO.CO_MOTIVO = SP.CO_MOTIVO 
                                                        INNER JOIN TB_SITUACAO_PACIENTE TS ON TS.CO_SITUACAO_PACIENTE = SP.CO_SITUACAO_PACIENTE 
                                                      WHERE SP.CD_PAC = {$id}");
                $this->request->data += array('SITUACAO' => $resSituacao);
                
                if (!empty($this->request->data['Paciente']['CD_CID_NAT'])) {
                    $this->loadModel('Uf');
                    $res = $this->Uf->query("SELECT CD_UF FROM CIDADE WHERE CD_CID = {$this->request->data['Paciente']['CD_CID_NAT']}");
                    $this->request->data['Paciente']['CD_UF'] = $res[0][0]['CD_UF'];
                }

                $this->request->data['Paciente']['DT_NASC'] = date('Y-m-d', strtotime($this->request->data['Paciente']['DT_NASC']));
            }
        }
    }

    public function uploadIMGPaciente($tmp_nome, $cdLogin) {
//        if (is_uploaded_file($tmp_nome)) {
//            $this->Paciente->query("UPDATE PACIENTE SET IM_FOTO = (SELECT * FROM OPENROWSET(BULK '" . $tmp_nome . "', SINGLE_BLOB) AS A) WHERE CD_PAC = '" . $cdLogin . "'");
//        } else {
//            $this->Session->setFlash("Falha no upload");
//        }
//        return;
    }

    public function uploadIMG($tmp_nome, $cdLogin) {
        if (is_uploaded_file($tmp_nome)) {
            $this->Paciente->query("UPDATE AUTORIZADO SET IM_FOTO = (SELECT * FROM OPENROWSET(BULK '" . $tmp_nome . "', SINGLE_BLOB) AS A) WHERE CD_LOGIN = '" . $cdLogin . "'");
        } else {
            $this->Session->setFlash("Falha no upload");
        }
        return;
    }

    /**
     * Realiza o cadastro basico o Paciente
     * @param array $post
     * @return array $post
     */
    protected function cadastroBasico(array &$post) {
        $arrCreate = array();
        if (!$post['CD_PAC']) {
            $this->Paciente->create();
            $arrCreate['Paciente']['CD_PAC'] = $this->Paciente->nextVal('CD_PAC');
        }

        $arrCreate['Paciente']['NM_PAC'] = $post['NM_PAC'];
        if ($post['SEXO'])
            $arrCreate['Paciente']['SEXO'] = ($post['SEXO'] == 'M') ? 2 : 1;
        if ($post['NUM_CPF_PAC'])
            $arrCreate['Paciente']['NUM_CPF_PAC'] = $post['NUM_CPF_PAC'];
        if ($post['NM_MAE'])
            $arrCreate['Paciente']['NM_MAE'] = $post['NM_MAE'];
        if ($post['RACA'])
            $arrCreate['Paciente']['RACA'] = $post['RACA'];
        if ($post['CO_ETNIA'])
            $arrCreate['Paciente']['CO_ETNIA'] = $post['CO_ETNIA'];
        if ($post['DT_NASC'])
            $arrCreate['Paciente']['DT_NASC'] = date('Y-m-d H:i:s', strtotime(str_replace('/', '-', $post['DT_NASC'])));
        if ($post['EMAIL'])
            $arrCreate['Paciente']['EMAIL'] = $post['EMAIL'];
        if ($post['E_MAIL'])
            $arrCreate['Paciente']['E_MAIL'] = $post['E_MAIL'];

        $arrCreate['Paciente']['DT_CADAS'] = date('Y-m-d H:i:s');
        $arrCreate['Paciente']['CASO_AIDS'] = 'N';
        $arrCreate['Paciente']['ST_PACIENTE'] = 'A';

        if ($post['CD_CID_NAT'])
            $arrCreate['Paciente']['CD_CID_NAT'] = $post['CD_CID_NAT'];
        if ($post['PAIS'])
            $arrCreate['Paciente']['CD_PAIS'] = $post['PAIS'];

        if (isset($post['CD_LOGIN']))
            $arrCreate['Paciente']['CD_LOGIN'] = $post['CD_LOGIN'];
        #salva dados do Paciente
        return $codPaciente = $this->Paciente->save($arrCreate['Paciente'], false);
    }

    public function infohiv() {
        $this->layout = false;
        $this->autoRender = false;
        $this->render(false);
        $post = $this->request->data;

        if ((!$post['DIAG_HIV']) || (!$post['DT_RETRO']) || (!$post['CASO_AIDS']))
            return false;

        $this->loadModel('Paciente');
        $conditions = array("conditions" => array("Paciente.CD_PAC" => $post['CD_PAC']));
        $arrPaciente = array(); #$this->Paciente->find('first', $conditions);

        $arrPaciente['Paciente']['CD_PAC'] = $post['CD_PAC'];
        $arrPaciente['Paciente']['CASO_AIDS'] = "'" . $post['CASO_AIDS'] . "'";
        $arrPaciente['Paciente']['NU_MES_DIAG_HIV'] = substr($post['DIAG_HIV'], 0, 2);
        $arrPaciente['Paciente']['NU_ANO_DIAG_HIV'] = substr($post['DIAG_HIV'], 6);
        $arrPaciente['Paciente']['DT_INIC_ANTI_RETRO'] = "'" . date('Y-m-d H:i:s', strtotime($post['DT_RETRO'])) . "'";
        $arrPaciente['Paciente']['DT_ULT_ATU'] = "'" . date('Y-m-d') . "'";

        $codPaciente = $this->Paciente->updateAll($arrPaciente['Paciente']);

        echo true;
    }

    public function cadastrarcomplementar() {
        $this->layout = false;
        $this->autoRender = false;
        $this->render(false);

        $arrDigits = array('-', '/', '.', ',');
        $post = $this->request->data;

        try {

            $this->loadModel('Endereco');

            $data = date('Y-m-d');

            $dataSource = $this->Paciente->getDataSource();
            $dataSource->begin();


            $this->Paciente->query("UPDATE PACIENTE SET 
                    NM_PAI = '{$post['NM_PAI']}',
                    NUM_RG = '{$post['NUM_RG']}',
                    ORGAO_EXPED = '{$post['ORGAO_EXPED']}',
                    CD_ESTADO_CIVIL = {$post['CD_ESTADO_CIVIL']},
                    CD_ESCOLARIDADE = {$post['CD_ESCOLARIDADE']},
                    DT_ULT_ATU = '{$data}'
                 WHERE CD_PAC = {$post['CD_PAC']}");

            $this->loadModel('Endereco');
            $this->Endereco->query("DELETE FROM TB_ENDERECO WHERE CD_PAC = {$post['CD_PAC']}");

            $CEP = str_replace($arrDigits, '', $post['NU_CEP']);
            $CID = trim($post['CD_CID']);

            $this->Endereco->query("INSERT INTO TB_ENDERECO ( 
                    CD_PAC,
                    CD_CID,
                    DS_LOGRADOURO,
                    DS_BAIRRO,
                    NU_CEP,
                    TP_ENDERECO,
                    ST_PRINCIPAL
                    ) VALUES (
                        '{$post['CD_PAC']}',
                        '{$CID}',
                        '{$post['DS_LOGRADOURO']}',
                        '{$post['DS_BAIRRO']}',
                        '{$CEP}',
                        '{$post['TP_ENDERECO']}',
                        'S'
                    )");

            $dataSource->commit();

            echo true;
        } catch (Exception $e) {
            $dataSource->rollback();
            $this->Session->setFlash(__('Ocorreu erro no cadastro'));
        }
    }

    public function cadastraresponsavel() {
        $this->layout = false;
        $this->autoRender = false;
        $this->render(false);

        $post = $this->request->data;
        try {
            $cpf = str_replace(array('.', '-'), '', $post['NU_CPF_RESPONSAVEL']);
            $query = "INSERT INTO TB_RESPONSAVEL (NO_RESPONSAVEL, NU_CPF_RESPONSAVEL) VALUES ('{$post['NO_RESPONSAVEL']}', '{$cpf}') ";
            $this->Paciente->query($query);
            $co_responsavel = $this->Paciente->query("SELECT MAX(CO_RESPONSAVEL) CO_RESPONSAVEL FROM TB_RESPONSAVEL");
            $this->Paciente->query("INSERT INTO RL_RESPONSAVEL_PACIENTE (CO_RESPONSAVEL, CD_PAC) VALUES ('{$co_responsavel[0][0]['CO_RESPONSAVEL']}', '{$post['CD_PAC']}') ");
            echo true;
        } catch (Exception $e) {
            $this->Session->setFlash(__('Ocorreu erro no cadastro'));
        }
    }

    public function cadastrarsituacao() {
        $this->layout = false;
        $this->autoRender = false;
        $this->render(false);

        $dataSource = $this->Paciente->getDataSource();

        $post = $this->request->data;

        try {
            $dataSource->begin();
            $data = date('Y-m-d');
            $this->Paciente->query("INSERT INTO RL_SITUACAO_PACIENTE (CO_SITUACAO_PACIENTE, CD_PAC, DT_SITUACAO_PACIENTE, CO_MOTIVO, DS_OBSERVACAO) 
                                    VALUES ('{$post['CO_SITUACAO']}','{$post['CD_PAC']}','{$data}','{$post['CO_MOTIVO']}','{$post['DS_OBSERVACAO']}') ");
            $dataSource->commit();
            echo true;
        } catch (Exception $e) {
            $dataSource->rollback();
            $this->Session->setFlash(__('Ocorreu erro no cadastro'));
        }
    }

    public function removeresponsavel() {
        $this->layout = false;
        $this->autoRender = false;
        $this->render(false);

        $this->loadModel('Endereco');
        $post = $this->request->data;
        try {
            $this->Endereco->query("DELETE FROM RL_RESPONSAVEL_PACIENTE WHERE CO_RESPONSAVEL = {$post['CO_RESPONSAVEL']} AND CD_PAC = {$post['CD_PAC']}");
            $this->Endereco->query("DELETE FROM TB_RESPONSAVEL WHERE CO_RESPONSAVEL = {$post['CO_RESPONSAVEL']}");
            echo true;
        } catch (Exception $e) {
            $this->Session->setFlash(__('Ocorreu erro no cadastro'));
        }
    }

    public function validaFormulario(&$post) {

        if (!$post['NM_PAC']) {
            $this->Session->setFlash(__('O nome do Paciente é obrigatório.'));
            return false;
        }
        if (!$post['NUM_CPF_PAC']) {
            $this->Session->setFlash(__('O número de CPF é obrigatório.'));
            return false;
        }

        $post['NUM_CPF_PAC'] = str_replace(array('.', '-'), '', $post['NUM_CPF_PAC']);

//        $data = array_reverse(explode('/', $post['DT_NASC']));
//        $post['DT_NASC'] =  $data[0] .'-'. $data[1] .'-'. $data[2] . ' 00:00:00';
#localizando Paciente
        $this->loadModel('Paciente');
//        $options = array('conditions' => array('Paciente.NM_PAC' => $post['NM_PAC']));
//        $Paciente = $this->Paciente->find('first', $options);
// [RN-PAC_003] - OPA! Existe registro cadastrado, vamos entao verificar a duplicidade
//        if (count($Paciente)) {
//            // [RN-PAC_004][1][2][3]
//            if (($post['NUM_CPF_PAC'] == $Paciente['Paciente']['NUM_CPF_PAC'])
//                && ($post['NM_MAE'] == $Paciente['Paciente']['NM_MAE'])
//                && ($post['DT_NASC'] == $Paciente['Paciente']['DT_NASC'])
//                && ($post['CD_CID_NAT'] == $Paciente['Paciente']['CD_CID_NAT'])) {
//                # [RN-PAC_003][1] - Se exitver excluida
//                if ($Paciente['Paciente']['CD_CID_NAT'] == 'E') {
//                    // avisa se quer ativar
//                    $this->Session->setFlash(__('Quer ativar?'));
//                    return false;
//                }
//
//                # [RN-PAC_003][2] - Se exitver excluida
//                // retorna as opcoes
//            }
//        }
// apagando alguns registros para evitar erros
//        unset($post['PAIS']);
//        unset($post['DT_NASC']);

        return true;
    }

}
